package simple.string;

import java.util.HashMap;
import java.util.Map;
import java.util.Objects;

/**
 * @Desc <a href="https://leetcode.cn/problems/word-pattern/">290. 单词规律</a>
 * 给定一种规律 pattern 和一个字符串 s ，判断 s 是否遵循相同的规律。
 * 这里的 遵循 指完全匹配，例如， pattern 里的每个字母和字符串 s 中的每个非空单词之间存在着双向连接的对应规律。
 * 示例1:
 *   输入: pattern = "abba", s = "dog cat cat dog"
 *   输出: true
 * 示例 2:
 *   输入:pattern = "abba", s = "dog cat cat fish"
 *   输出: false
 * 示例 3:
 *   输入: pattern = "aaaa", s = "dog cat cat dog"
 *   输出: false
 * 提示:
 *   1 <= pattern.length <= 300
 *   pattern 只包含小写英文字母
 *   1 <= s.length <= 3000
 *   s 只包含小写英文字母和 ' '
 *   s 不包含 任何前导或尾随对空格
 *   s 中每个单词都被 单个空格 分隔
 * @Date 2023/2/6 16:57
 * @Created by 刘学松
 */
public class 单词规律 {
    public boolean wordPattern(String pattern, String s) {
        String[] words = s.split(" ");
        if (words.length != pattern.length()) {
            return false;
        }
        Map<Object, Integer> map = new HashMap<>();
        for (int i = 0; i < words.length; i++) {
            if (!Objects.equals(map.put(words[i], i), map.put(pattern.charAt(i), i))) {
                return false;
            }
        }
        return true;
    }
}
